/**
 *  这是一个小程序封装的的全局请求方式
 *  Created by gaobo on 2021/03/06
 */
// 引入缓存插件
var cache = require('./cache.js') // 缓存方法
var util = require('./util.js') // 公用插件方法
// 地址
const url = {
	dev: ``,
};
const apiUrl = url.dev;

// token 
let token = ""
// 公共参数 



//  api      请求方式/路由
//  params   参数
const httpTokenRequest = (opts, params) => {
	if (!params) params = {}
	// 公共参数
	if(!params.token){
		params.token =  token = cache.fetchCache(cache.TOKEN) || ""
	}
	let promise = new Promise(function(resolve, reject) {
		wx.request({
			url: apiUrl + opts.url, //仅为示例，并非真实的接口地址
			data: params, // 参数
			method: opts.method, // 请求方式
			header: opts.method == 'GET' ? {
				'token': token,
				'X-Requested-With': 'XMLHttpRequest',
				"Accept": "application/json",
				"Content-Type": "application/json; charset=UTF-8"
			} : {
				'token': token,
				// 'X-Requested-With': 'XMLHttpRequest',
				// 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
				// 'Content-Type': ' multipart/form-data'
			},
			dataType: 'json',
			success(res) {
				// 拦截500
				if(res.data.code == 500){
					util.showToast("服务器繁忙")
				}
				// 未登录
				if(res.data.code == 100){
					cache.removeCache('userinfo')  // 清除userinfo
					wx.navigateTo({
						url: '/pages/login/login'
					})
					return false
				}
				resolve(res.data)
			},
			fail(res) {
				console.log(res)
				reject(res.data)
			},
			complete(res) {

			}
		})

	})
	return promise

}


// POST请求
const optsPost = {
	method: "POST",
	url: ''
}
// GET请求
const optsGet = {
	method: "GET",
	url: ''
}
// 请求方式
// post
let post = (url, data) => {
	try {
		optsPost.url = url
		return httpTokenRequest(optsPost, data)
	} catch (e) {
		console.log(e)
		//TODO handle the exception
	}
}
// get
let get = (url, data) => {
	try {
		optsGet.url = url
		return httpTokenRequest(optsGet, data)
	} catch (e) {
		console.log(e)
		//TODO handle the exception
	}
}
module.exports = {
	httpTokenRequest,
	apiUrl,
	/**
	 * 写需求请求的接口
	 */
	// 接口请求
	post,
	get,


}
